package com.tiantian.app.manager;


import java.util.ArrayList;
import java.util.List;

 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
 


public final class ProjDbAdapter {


	//TABLE web version
	public static final String K_TWEBVERSION = "t_web_version";
	public static final String K_WEBVERSION_ID = "_id";
	public static final String K_SET_PRODUCTVERSION = "ProductVersion";
	public static final String K_SET_APPID = "AppId";
	public static final String K_SET_SERVER = "Server";
	
    public static final String TABLE_WEBVERSION_SETTINGS = "CREATE TABLE IF NOT EXISTS "+K_TWEBVERSION+" ("+
    					K_WEBVERSION_ID+" integer primary key autoincrement, "+
    					K_SET_PRODUCTVERSION+" integer, "+
    					K_SET_APPID+" integer, "+
    					K_SET_SERVER+" text "+
        		        ");";
 
    
    public static final String K_TAPPINFOS = "t_appinfo";
    public static final String K_APPINFO_ID = "_id";
    public static final String K_APPINFO_SUB_ID = "subId";
    public static final String K_APPINFO_HEADLINE = "headline";
    public static final String K_APPINFO_CODE = "code";
    public static final String K_APPINFO_LAYOUT = "layout"; 
    public static final String K_APPINFO_ICON_IMAGE = "iconImg";
    public static final String K_APPINFO_ICON_TEXT = "iconText";

    
    public static final String TABLE_APPINFOS_SETTING = "CREATE TABLE IF NOT EXISTS "+K_TAPPINFOS+" ( "+
                        K_APPINFO_ID +" integer primary key autoincrement, "+
                        K_APPINFO_SUB_ID + " long not null unique, "+
                        K_APPINFO_HEADLINE + " text, "+
                        K_APPINFO_CODE + " text, "+
                        K_APPINFO_LAYOUT + " text, "+
                        K_APPINFO_ICON_IMAGE+" text, "+
                        K_APPINFO_ICON_TEXT+" text "+
                        ");";
    

	private static final String TAG = "ProjDbAdapter";
	// private DbAdapter mDbHelper;
	private static SQLiteDatabase mDb;

	private final Context mCtx;

	public static final int PAGE_SIZE = 10;

	private static ProjDbAdapter instance = null;

	private ProjDbAdapter(Context ctx) {
		this.mCtx = ctx;
		// mDbHelper = new IMDbAdapter(mCtx);
		mDb = DbAdapter.getInstance(ctx);

	}

	public static ProjDbAdapter getInstance(Context ctx) {
		if (instance == null) {
			instance = new ProjDbAdapter(ctx);
		}
		if (mDb == null || !mDb.isOpen()) {
			mDb = DbAdapter.getInstance(ctx);
		}
		return instance;
	}

	/**
	 * only can be called when im app exit.
	 */
	public synchronized  static void close() {
		DbAdapter.close();
		instance = null;
	}
	
	public void open(){
		 DbAdapter.open();
	}
	
	public void checkOpen(){
		if (mDb == null || !mDb.isOpen()) {
			mDb = DbAdapter.getInstance(this.mCtx);
		}
	}

	public static boolean isOpen() {
		if (instance != null) {
			return true;
		}
		return false;
	}

	public void deleteAll() {
		checkOpen();
		mDb.delete(K_TWEBVERSION, null, null);
	}
	
    public Cursor loadWebVersion(){  
    	checkOpen();
        Cursor cur=mDb.query(K_TWEBVERSION, new String[]{K_WEBVERSION_ID,K_SET_PRODUCTVERSION,K_SET_APPID,K_SET_SERVER}, null,null,null, null, null, null);  
        return cur;  
    } 
	
	public boolean addWebVersion(int productVersion,int appId,String server){
		    checkOpen();
		    ContentValues cv = new ContentValues(); 
	        cv.put(K_SET_PRODUCTVERSION, productVersion);             
	        cv.put(K_SET_APPID, appId);
	        cv.put(K_SET_SERVER, server);
	        mDb.insert(K_TWEBVERSION, null, cv); 
		    return false;
	}
	
	
 
//	public synchronized boolean addPlugins(AppSubVo appSub){
//		  if(appSub==null)
//			  return false;
//		  checkOpen();
//		  long subId = appSub.getSubId();
//		  if(checkHavePlugin(subId)){
//			  updatePluginsInfo(appSub);
//		  }else{
//			  String headline = appSub.getHeadline();
//			  String code = appSub.getCode();
//			  String layout = appSub.getLayout();
//			  String iconImage = appSub.getIconImg();
//			  String iconText = appSub.getIconText();
//			  
//			  ContentValues cv = new ContentValues();
//			  cv.put(K_APPINFO_SUB_ID,subId);
//			  cv.put(K_APPINFO_HEADLINE, headline);
//			  cv.put(K_APPINFO_CODE, code);
//			  cv.put(K_APPINFO_LAYOUT, layout);
//			  cv.put(K_APPINFO_ICON_IMAGE, iconImage);
//			  cv.put(K_APPINFO_ICON_TEXT, iconText);;
//			  mDb.insert(K_TAPPINFOS, null, cv);
//		  }
//		  return true;
//	}
//	
// 
// 
//	
//	public synchronized boolean updatePluginsInfo(AppSubVo appSub){
//		if(appSub==null)
//			return false;
//		checkOpen();
//		long subId = appSub.getSubId();
//	    String headline = appSub.getHeadline();
//	    String code = appSub.getCode();
//	    String layout = appSub.getLayout();
//	    String iconImage = appSub.getIconImg();
//	    String iconText = appSub.getIconText();
//		
// 
//        String sql = "UPDATE "+K_TAPPINFOS+" SET "+K_APPINFO_HEADLINE+" =?,"+K_APPINFO_CODE+" =?,"+K_APPINFO_LAYOUT+" =?,"+K_APPINFO_ICON_IMAGE+" =?,"+K_APPINFO_ICON_TEXT+" =? WHERE "+K_APPINFO_SUB_ID+" = ? ";
//        Object[] bindArgs = {headline,code,layout,iconImage,iconText,subId};
//        mDb.execSQL(sql, bindArgs);
//		return true;
//	}
//	
// 
//	
// 
//	   public boolean checkHavePlugin(long appVoSubId){
//		   checkOpen();
//		   Cursor cur = null;
//		   try{
//			   cur = mDb.query(K_TAPPINFOS, new String[]{K_APPINFO_SUB_ID}, null, null, null, null, null);
//			   if(cur.getCount()>0){
//				   cur.moveToFirst();
//				   while(!cur.isAfterLast()){
//					   long subId = cur.getLong(cur.getColumnIndex(K_APPINFO_SUB_ID));
//					   if(appVoSubId == subId){
//						   return true;
//					   }
//					   cur.moveToNext();
//				   }
//			   }
//			   
//		   }catch(Exception e){
//			   
//		   }
//		   finally{
//			   if(cur!=null){
//				   cur.close();
//				   cur = null;
//			   }
//		   }
//		   return false;
//	   }
//	
// 
//   public List<AppSubVo> getAllPlugins(){
//	   checkOpen();
//	   List<AppSubVo> plugins = new ArrayList<AppSubVo>();
//	   Cursor cur = null;
//	   try{
//		   cur = mDb.query(K_TAPPINFOS, new String[]{K_APPINFO_SUB_ID,K_APPINFO_HEADLINE,K_APPINFO_CODE,K_APPINFO_LAYOUT,K_APPINFO_ICON_IMAGE,K_APPINFO_ICON_TEXT}, null, null, null, null, null);
//		   if(cur.getCount()>0){
//			   cur.moveToFirst();
//			   AppSubVo pv;
//			   while(!cur.isAfterLast()){
//				   long subId = cur.getLong(cur.getColumnIndex(K_APPINFO_SUB_ID));
//				   String headline = cur.getString(cur.getColumnIndex(K_APPINFO_HEADLINE));
//				   String code = cur.getString(cur.getColumnIndex(K_APPINFO_CODE));
//				   String layout = cur.getString(cur.getColumnIndex(K_APPINFO_LAYOUT));
//				   String iconImage = cur.getString(cur.getColumnIndex(K_APPINFO_ICON_IMAGE));
//				   String iconText = cur.getString(cur.getColumnIndex(K_APPINFO_ICON_TEXT));
//				   pv = new AppSubVo();
//				   pv.setSubId(subId);
//				   pv.setHeadline(headline);
//				   pv.setCode(code);
//				   pv.setLayout(layout);
//				   pv.setIconImg(iconImage);
//				   pv.setIconText(iconText);
// 
//				   plugins.add(pv);
// 
//				   cur.moveToNext();
//			   }
//		   }
//		   
//	   }catch(Exception e){
//		   
//	   }
//	   finally{
//		   if(cur!=null){
//			   cur.close();
//			   cur = null;
//		   }
//	   }
//	   return plugins;
//   }
//	
	
 
	
//	public boolean addDownloadThread(int appid,int len,int pos,int sp,int ep,String filepath){
//		checkOpen();
//		ContentValues cv = new ContentValues();
//		cv.put(K_DOWNLOAD_THREAD_APPID, appid);
//		cv.put(K_DOWNLOAD_THREAD_LEN, len);
//		cv.put(K_DOWNLOAD_THREAD_POS, pos);
//		cv.put(K_DOWNLOAD_THREAD_SP, sp);
//		cv.put(K_DOWNLOAD_THREAD_EP, ep);
//		if(filepath!=null)
//			cv.put(K_DOWNLOAD_THREAD_TEMPFILEPATH, filepath);
//		cv.put(K_DOWNLOAD_THREAD_STATUS, "download");
//		mDb.insert(K_TDOWNLOAD_DATA, null, cv);
//		return false;
//	}
//	
//	public synchronized boolean updateDownloadThread(int appid,int pos,String filepath){
//		checkOpen();
////		ContentValues cv = new ContentValues();
////		mDb.update(K_TDOWNLOAD_DATA, cv,  K_DOWNLOAD_THREAD_APPID+" = ? AND " + K_DOWNLOAD_THREAD_POS + " = ?", whereArgs);
//        String sql = "UPDATE "+K_TDOWNLOAD_DATA+" SET "+K_DOWNLOAD_THREAD_TEMPFILEPATH+" =? , "+K_DOWNLOAD_THREAD_STATUS+" =? WHERE "+K_DOWNLOAD_THREAD_APPID+" = ? AND " + K_DOWNLOAD_THREAD_POS + " = ?";
//        Object[] bindArgs = {filepath,"finish", appid,pos};
//        mDb.execSQL(sql, bindArgs);
//		return false;
//	}
//	
//	public synchronized int checkDownloadThreadStatus(int appid){
//		checkOpen();
//		int num = 0;
//		Cursor cur = null;
//		try{
//			cur = mDb.query(K_TDOWNLOAD_DATA, new String[]{K_DOWNLOAD_THREAD_APPID,K_DOWNLOAD_THREAD_STATUS}, null, null, null, null, null);
//		    if (cur.getCount() > 0) {
//		    	cur.moveToFirst();
//			    while (!cur.isAfterLast()) {
//			    	int tempAppid = cur.getInt(cur.getColumnIndex(K_DOWNLOAD_THREAD_APPID));
//			    	if(appid == tempAppid){
//				    	String status = cur.getString(cur.getColumnIndex(K_DOWNLOAD_THREAD_STATUS));
//				    	if("finish".equals(status)){
//				    		num++;
//				    	}
//			    	}
//			    	cur.moveToNext();
//			    }
//		    }
//		}catch(Exception e){
//			Log.v("dataerror", ""+e.getMessage());
//		}
//		finally{
//		    if(cur!=null){
//			    cur.close(); 
//			    cur = null;
//		    }
//		} 
//		return num;
//	}
//	
// 
//	
//	public boolean deleteDownloadThread(int appid){
//		checkOpen();
//		mDb.delete(K_TDOWNLOAD_DATA, K_DOWNLOAD_THREAD_APPID+"=?", new String[] {""+appid});
//		return false;
//	}
//	
//	public synchronized Cursor getDownloadThread(int appid){
//		checkOpen();
//		return mDb.query(K_TDOWNLOAD_DATA, new String[]{K_DOWNLOAD_THREAD_APPID,K_DOWNLOAD_THREAD_POS,K_DOWNLOAD_THREAD_SP,K_DOWNLOAD_THREAD_EP,K_DOWNLOAD_THREAD_TEMPFILEPATH,K_DOWNLOAD_THREAD_STATUS}, K_DOWNLOAD_THREAD_APPID+"=?",
//				new String[]{""+appid}, null, null, null);
//		//(K_TDOWNLOAD_DATA, K_DOWNLOAD_THREAD_APPID+"=?", new String[] {""+appid});
//		
//	}
//	
//	public synchronized Cursor getDownloadList(){
//		checkOpen();
//		return mDb.query(K_TPLUGINS, new String[]{K_PLUGIN_KEY,K_PLUGIN_VERSION,K_PLUGIN_STATUS},
//				null, null, null, null, null);
//	}
//	
//	public boolean updateCategoryVersion(int version){
//		checkOpen();
//        String sql = "UPDATE "+K_TCATEGORY_VERSION+" SET "+K_CATEGORY_VERSION+" =? ";
//        Object[] bindArgs = {version};
//        mDb.execSQL(sql, bindArgs);
//		return false;
//	}
//	
//	public synchronized int getCategoryVersion(){
//		checkOpen();
//		int version = 0;
//		Cursor cur = null;
//		try{
//			cur = mDb.query(K_TCATEGORY_VERSION, new String[]{K_CATEGORY_VERSION}, null, null, null, null, null);
//		    if (cur.getCount() > 0) {
//		    	cur.moveToFirst();
//		    	version = cur.getInt(cur.getColumnIndex(K_CATEGORY_VERSION));
//		    	Log.v("cv", "version:"+version);
//		    }
//		}catch(Exception e){
//			Log.v("dataerror", ""+e.getMessage());
//		}
//		finally{
//		    if(cur!=null){
//			    cur.close(); 
//			    cur = null;
//		    }
//		}
//		return version; 
//	}
//	
//	/*
//	     public static final String TABLE_CATEGORY_DETAIL_SETTING = "CREATE TABLE IF NOT EXISTS "+K_TCATEGORY_DETAIL+" ( "+
//                        K_CATEGORY_DETAIL_ID + " integer primary key autoincrement, "+
//                        K_CATEGORY_CID+" integer , " + 
//                        K_CATEGORY_CNAME + " text, " +
//                        K_CATEGORY_CIURL + " text, " +
//                        K_CATEGORY_CICON  + " blob, " +
//                        K_CATEGORY_SUBLIST + " text" +
//                        ")";
//	 */
//
//	public synchronized boolean addCategory(int cid,String cname,String ciurl,byte[] imgageData,String sublist){
//		checkOpen();
//		ContentValues cv = new ContentValues();
//		cv.put(K_CATEGORY_CID, cid);
//		cv.put(K_CATEGORY_CNAME, cname);
//		cv.put(K_CATEGORY_CIURL, ciurl);
//		cv.put(K_CATEGORY_CICON, imgageData);
//		cv.put(K_CATEGORY_SUBLIST, sublist);
//		mDb.insert(K_TCATEGORY_DETAIL, null, cv);
//		return false;
//	}

 
	
}
